#ifndef SONGLISTWIDGET_H
#define SONGLISTWIDGET_H

/**
Nectarine Utility Project is a software interface for the web system 'demovibes'
Copyright (C) 2010  Alexandre LAURENT

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

website: http://code.google.com/p/nectarine-utility-project/
e-mail: lw.demoscene@gmail.com
**/

#include <QTableWidget>
#include <QList>

#include "../Types/songrequest.h"

class QWidget;
class QMenu;
class QAction;
class QSignalMapper;
class QListWidgetItem;

class SongListWidget : public QTableWidget
{
    Q_OBJECT

private:

    //QTableWidget* pTableSong;

    QList<SongRequest> data;

    QMenu* pSongMenu;
    QAction* pSongAction;
    QSignalMapper* pSongPageSignalMapper;

    QMenu* pArtistMenu;
    QAction* pArtistAction;
    QSignalMapper* pArtistPageSignalMapper;

    QMenu* pUserMenu;
    QAction* pUserAction;
    QSignalMapper* pUserPageSignalMapper;


    void updateInterface();

protected slots:

    void displayMenuItemClicked(QTableWidgetItem* pItem);
    void displayMenuArtist(QListWidgetItem* pItem);

signals:

    void requestSongPage(const int id);
    void requestArtistPage(const int id);
    void requestUserPage(const QString username);

public:
    SongListWidget(QWidget* parent=0);
    ~SongListWidget();

    void setData(const QList<SongRequest>& queueList);
};

/*
class FlagNameTWI : public QTableWidgetItem
{
    Q_OBJECT

private:

    QHBoxLayout* pMainLayout;

    QLabel* pPixmapLabel;
    QLabel* pLabelTag;

public:

    FlagNameTWI(void);

};
*/

#endif // SONGLISTWIDGET_H
